//
//  MyLayout2.m
//  waterfall-test
//
//  Created by Song on 2018/6/20.
//  Copyright © 2018年 Song. All rights reserved.
//

#import "MyLayout2.h"

@implementation MyLayout2

// collectionView第一次布局的时候和布局失效的时候会调用该方法，需要注意的是子类要记得调用super
-(void)prepareLayout {
    [super prepareLayout];
    
    // 初始化字典，有几列就有几个键值对，key为列，value为列的最大y值，初始值为上内边距
    for (int i = 0; i < self.columnCount; i++) {
        self.maxYDic[@(i)] = @(self.sectionInset.top);
    }
    
    // 根据collectionView获取总共有多少个item
    NSInteger itemCount = [self.collectionView numberOfItemsInSection:0];
    // 为每一个item创建一个attributes并存入数组
    for (int i = 0; i < itemCount; i++) {
        UICollectionViewLayoutAttributes *attributes = [self layoutAttributesForItemAtIndexPath:[NSIndexPath indexPathForItem:i inSection:0]];
        [self.attributesArray addObject:attributes];
    }
}

// 返回collectionView的滚动范围
-(CGSize)collectionViewContentSize {
    
    //假设第0列是最长的那列
    __block NSNumber *maxIndex = @0;
    
    //遍历字典，找出最长的那一列
    [self.maxYDic enumerateKeysAndObjectsUsingBlock:^(NSNumber *key, NSNumber *obj, BOOL * stop) {
        
        //如果maxColumn列的最大y值小于obj，则让maxColumn等于obj所属的列
        if ([self.maxYDic[maxIndex] floatValue] < obj.floatValue) {
            maxIndex = key;
        }
    }];
    
    //collectionView的contentSize.height就等于最长列的最大y值+下内边距
    return CGSizeMake(0, [self.maxYDic[maxIndex] floatValue] + self.sectionInset.bottom);
}

// 返回indexPath位置上的元素的布局属性

// 返回rect范围内所有元素的布局属性的数组
@end
